The present invention relates to database management techniques, and more particularly to a database management system which is applicable to a parallel database management system having a function of executing a program module incorporated therein by a user.
The present invention utilizes the following three known techniques related to a database management system (hereinafter abbreviated as "DBMS") for managing a database (hereinafter abbreviated as "DB"):
(1) Parallel DB Processing; PA1 (2) SQL3; and PA1 (3) Object Relational DBMS. PA1 SELECT extract(contents, "abstract") PA1 FROM reports PA1 WHERE published.sub.-- date&gt;`Oct. 15, 1996`
In the following, these three known techniques will be briefly described.
(1) Parallel DB Processing:
This is a method of parallelly executing database processing which satisfies a user's request using a plurality of processors for processing user's queries involving a large amount of data. An example of this method is described in JP-A-8-137910 (Reference 1). In the method of Reference 1, a processor receives a user's query, and a DBMS controls the executions of a plurality of engine processors (execution servers) such that a load is optimally distributed among the engine processors.
(2) SQL3:
SQL3 is a draft of a database language specification for which the International Standard Organization (ISO) is currently working for standardization. For example, according to "Information technology--Database languages--SQL--Part 2: SQL/Foundation" ISO/IEC JTCl/SC21 N10489 (Reference 2), SQL3 permits a description as follows:
______________________________________ CREATE TYPE sgmltex.sub.-- t ( text BLOB, 1 FUNCTION extract (sgmltext.sub.-- t, 2 VARCHAR) RETURNS BLOB LANGUAGE C 3 EXTERNAL NAME `p.sub.-- sgml.sub.-- extract`; ______________________________________
This description provides definition statements for an abstract data type (hereinafter abbreviated as "ADT"). 1 in the definition statements indicates that ADT sgmltext.sub.-- t is composed of a component of BLOB (Binary Large Object) type referenced by a name "text."
Also, 2 in the definition statements indicates that an ADT function extract() can be applied to data having an ADT sgmltext.sub.-- t type.
Further, 3 in the definition statements indicates that the ADT function extract() is related to an external function labelled p.sub.-- sgml.sub.-- extract described in C language.
The user can define his inherent data type using the ADT as described above, thereby realizing functions corresponding to data access, inheritance and so on by methods in a general object-oriented program language.
(3) Object Relational DBMS:
They say that a conventional relational DBMS (hereinafter abbreviated as "RDBMS") based on a relational data model is not suitable for handling data having a complicated structure such as multimedia data because it cannot provide close representations of such data and also implies other problems on performance. For this reason, an object relational DBMS (hereinafter abbreviated as "ORDBMS"), which introduces an object orientated concept into RDBMS, has been proposed as described in "Object Relational DBMSs" written by Michael Stonebraker, translated by Yoshinobu Ohta, and published by International Thompson Publishing Japan, August 1996 (Reference 3). Reference 3 mentions as a basic requirement of ORDBMS that ORDBMS should be capable of handling complicated objects. Reference 3 also mentions that the ORDBMS should be able to use the following user defined types and user defined functions:
______________________________________ create type phone.sub.-- t ( area varchar(3), 4 number varchar(7), 5 description varchar(20)); 6 ______________________________________
This description provides definition statements for a user defined complex type phone.sub.-- t. The definition statements indicate that the complex type phone.sub.-- t is composed of three components: a variable character string type element of three bytes or less referenced by a name "area" (4 in the definition statements); a variable character string type element of seven bytes or less referenced by a name "number" (5 in the definition statements); and a variable character string type element of 20 bytes or less referenced by a name "description" (6 in the definition statements).
An example of definition statements for a user defined function is shown in the following: EQU create function Northness-equal (point, point) returns Boolean with selfunc=selectivity.sub.-- comp external name '/usr/Northness.sub.-- equal' language C; 7
This description provides definition statements for a user defined function Northness.sub.-- equal(). 7 in the definition statements indicates that the user defined function Northness.sub.-- equal() is associated with an external function labelled /usr/Northness.sub.-- equal described in C language. As to an external function, Reference 3 describes that good ORDBMS should be able to dynamically link a user defined function so as not to consume an address space of DBMS for nothing until the user defined function is required. Such user defined type and user defined function can be used in correspondence to ADT and ADT function described by SQL3, respectively.